#include<iostream>
#include<unistd.h>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>

// 使用代码打开当前路径下的“bite”文件（如果文件不存在在创建文件），向文件当中写入“linux so easy!”.

// 2.2 在从文件当中读出文件当中的内容， 打印到标准输出当中； 关闭文件流指针

// 3.提交要求：提交代码截图， 提交代码执行之后的截图
// int main()
// {

//   // int fd1,fd2;
//   // fd1=open("foo.txt",O_RDONLY,0);
//   // close(fd1);
//   // fd2=open("baz.txt",O_RDONLY,0);
//   // printf("fd2=%d\n",fd2);
//   FILE * file = fopen("bite.txt","w+");
//   if(file==NULL)
//     std::cerr<<"打开文件失败"<<std::endl;

//   const char * str="linux so easy!";
//   fwrite(str,1,strlen(str),file);

//   // 移动文件指针到开头（否则读取会从文件末尾开始，读不到内容）
//     if (fseek(file, 0, SEEK_SET) != 0) {  // SEEK_SET：从文件开头偏移0字节
//         perror("fseek failed");
//         fclose(file);
//         return 1;
//     }

//   char buff[1024]={};
//   size_t size=fread(buff,1,sizeof(buff)-1,file);
//   if(size==0)
//   {
    
//     perror("fread failed or end of file");
//   }
//   else
//   {
//     buff[sizeof(buff)]='\0';
//     printf("%s\n",buff);
//   }

//   fclose(file);
//   return 0;
// }
int main()
{
  int fd;
  fd=open("bite.txt",O_RDWR|O_CREAT,0644);
  if(fd<0)
  {
    std::cerr<<"open file fail"<<std::endl;
    exit(1);
  }
  const char * str ="i like linux\n";
  write(fd,str,strlen(str));
  off_t new_pos = lseek(fd, 0, SEEK_SET);
    if (new_pos == -1) {
        perror("lseek failed");
        close(fd);
        exit(1);
    }
  char buff[1024] ={};
  size_t read_size=read(fd,buff,sizeof(buff)-1);
  if (read_size == -1) {
        perror("read failed");
        close(fd);
        exit(1);
    } else if (read_size == 0) {
        printf("文件为空\n");
    } else {
        buff[read_size] = '\0';  // 手动添加字符串终止符
        printf("读取到的内容：\n%s", buff);
    }
    close(fd);
  return 0;
}